<?php

/**
 * Tutoria form.
 *
 * @package    ecampus
 * @subpackage form
 * @author     Grupo 608
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class TutoriaForm extends BaseTutoriaForm
{
  public function configure()
  {
      $anios = array(2009,2010,2011,2012,2013,2014,2015);
      //widgets
//      $this->widgetSchema['fecha_desde'] = new sfWidgetFormJQueryDate(array(),array());

            //rangos de fechas validos
//      $this->widgetSchema['fecha_desde'] =  new sfWidgetFormI18nDate(array('culture' => 'es', 'years' => $anios));
//      $this->widgetSchema['fecha_hasta'] =  new sfWidgetFormI18nDate(array('culture' => 'es', 'years' => $anios));
//
//          $this->widgetSchema['fecha_desde'] = new sfWidgetFormDate(array(
//                  'format' => '%year% - %month% - %day%',
//                  'years' => $anios,
//              ));
//          $this->widgetSchema['fecha_hasta'] = new sfWidgetFormDate(array(
//                  'format' => '%year% - %month% - %day%',
//                  'years' => $anios,
//              ));


//              new sfWidgetFormDate(array(
//                                      'format' => '%day% - %month% - %year%',
//                                      'years' => $anios
//                                      ));


//      $this->widgetSchema['fecha_hasta'] = new sfWidgetFormJQueryDate(array(
//                                                    'config' => '{}'));
      //validaciones
      $this->validatorSchema['id_docente']->setOption('required',true);
      $this->validatorSchema['id_alumno']->setOption('required',true);
      $this->validatorSchema['fecha_hasta']->setOption('required',true);
      $this->validatorSchema['fecha_desde']->setOption('required',true);



//validacion para que fecha_desde <= fecha_hasta
      $this->validatorSchema->setPostValidator(
              new sfValidatorSchemaCompare('fecha_desde',
                            sfValidatorSchemaCompare::LESS_THAN_EQUAL,
                            'fecha_hasta',
                            array(),
                            array('invalid' => 'La fecha de inicio (%left_field%) debe ser menor a la fecha de finalizacion (%right_field%)'))
              );
      
              //Widget
        $this->widgetSchema['activo'] = new sfWidgetFormInputCheckbox();
            
        //Validador
        $this->validatorSchema['activo'] = new sfValidatorBoolean();
      
        $this->setDefault('activo', true);

        $this->validatorSchema->setPostValidator(
          new   sfValidatorCallback(array('callback' => array($this, 'checkAsociacion')))
                                               );

  }
  public function checkAsociacion($validator, $values)
  {
    if(!($values['fecha_desde'] <= $values['fecha_hasta'])  )
    {
        throw new sfValidatorError($validator, 'La fecha inicial debe ser menor a la de finalizacion');
    }
    $tutoria = $this->getObject();

//    $recurso = Doctrine_Core::getTable('recurso')->find($values['id_recurso']);
//    if( !$recurso->estaDisponible($values['fecha_desde'],$values['fecha_hasta']) )
    if(Tutoria::estaRepetida($values['id_docente'], $values['id_alumno'], $values['fecha_desde'], $values['fecha_hasta']))
    {
      // si el horario esta repetido, lanzar un error
      throw new sfValidatorError($validator, 'La tutoria ya se encuentra registrada');
    }
    // si todo ok, retorna los clean values
    return $values;
  }
}
